#include <bits/stdc++.h>
using namespace std;
int a[500003];

// 检查 x 是否满足 m 的位条件
bool check1(int x, int m) {
  // 只需检查 m 中的位是否在 x 中也为 1
  return (x & m) == m; // 如果 x 中的位包含 m 中的所有 1，则返回 true
}

string work() {
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  vector<int> b; // 候选数字
  for (int i = 1; i <= n; i++) {
    if (check1(a[i], m)) {
      b.push_back(a[i]); // 仅将满足条件的数字添加到候选列表
    }
  }

  // 检查 m 中的每一位
  for (int i = 0; i <= 30; i++) {
    if ((m & (1 << i)) == 0) { // 如果 m 的第 i 位为 0
      bool flag = false;
      for (int x : b) {
        if ((x & (1 << i)) == 0) { // 检查候选数字中是否有第 i 位为 0 的
          flag = true;             // 找到一个符合条件的数字
          break;
        }
      }
      if (!flag)     // 如果没有找到符合条件的数字
        return "No"; // 返回 "No"
    }
  }
  return "Yes"; // 所有条件都满足，返回 "Yes"
}

int main() {
  int t;
  cin >> t;
  while (t--) {
    cout << work() << endl; // 输出每次测试的结果
  }
  return 0;
}